/* 
 * File:   DCliente.cpp
 * Author: Arturo
 * 
 * Created on November 27, 2010, 10:39 PM
 */

#include "DCliente.h"

DCliente* DCliente::instancia = NULL;

using namespace std;

DCliente::DCliente() {
    char linea[10000];

    int id;
    string nombre;
    string dni;

    ifstream file("clientes.txt");
    if (!file.fail()) {

        while (!file.eof()) {
            file.getline(linea, 10000);
            if (linea[0] == '\0') continue;

            id = atoi(strtok(linea, "_"));
            nombre = strtok(NULL, "_");
            dni = strtok(NULL, "_");
            this->Add(new NCliente(id, nombre, dni));
        }

        file.close();
    }
}

DCliente::~DCliente() {
}

DCliente &DCliente::GetInstancia() {
    if (instancia == NULL) {
        instancia = new DCliente();
    }

    return *instancia;
}

bool DCliente::Save() {
    // Si la lista esta vacia, retorno que NO he guardado nada.
    if (!this->Head) {
        return false;
    }

    ofstream file;
    file.open("clientes.txt");

    this->Reset();

    while(this->Current) {
        file << this->Current->Dato->ToDB() << endl;
        this->Next();
    }

    file.close();

    this->Reset();

    return true;
}

bool DCliente::FindByDni(string dni)
{
    this->Reset();

    while (this->Current) {
        if (((NCliente*)this->Current->Dato)->GetDni() == dni) {
            return true;
        }

        this->Next();
    }

    this->Reset();

    return false;
}
